#include <stdio.h>
#include <string.h>
#include "patient.h"
#include <stdlib.h>
#include"personnel.h"

void saisir_patient(Patient *pa)
{char fichier_patient[50];
int t;
char ch1[50]="f",ch2[50]="m";
    printf("donner le nom du patient:\n");fflush(stdin);
    scanf("%s: ",pa->nom);
    printf("donner le  prenom du patient:\n");fflush(stdin);
    scanf("%s: ",pa->prenom);
     do
	{
        printf("donner le sexe (m ou f):\n");fflush(stdin);
        scanf("%s: ",pa->sexe);
	}
     while(strcmp(pa->sexe,ch1)!=0 && strcmp(pa->sexe,ch2)!=0);
 	do
	{
    printf("donner l'age:\n");
    scanf("%d: ",&pa->age);
	}
	while(pa->age<0);
   do
{
        printf("donner l'id du patient:\n");
        scanf("%ld: ",&pa->id);
	
    }
    while ((pa->id)<50000 || (pa->id)>59999);
        do
        {
            printf("donner le niveau d_infection 1 ou 2 :\n");
            scanf("%d",&pa->niveau_infection);
        }
        while ((pa->niveau_infection)<1 || (pa->niveau_infection)>2);
    do
    {
        printf("Veuillez saisir le jour de naissance du patient: ");
        scanf("%d", &pa->date_entree.jour);
    }
    while ((pa->date_entree.jour>31)||(pa->date_entree.jour<1));
    do
    {
        printf("Veuillez saisir le mois de naissance du patient: ");
        scanf("%d", &pa->date_entree.mois);
    }
    while((pa->date_entree.mois<1)||(pa->date_entree.mois>12));
    do
    {
        printf("Veuillez saisir l'annee de naissance du patient: ");
        scanf("%d", &pa->date_entree.annee);
    }
    while ((pa->date_entree.annee<1900)||(pa->date_entree.annee<2014));
}
void enregistrer_patient(char fichier_patient[50],Patient *pa)
{
    saisir_patient(pa);
    FILE *f;
    f=fopen(fichier_patient,"ab");
    if(f==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier");
    }

    else
    {
        fwrite(&pa,sizeof(Patient),1,f);
    }


    fclose(f);
}

void liste_patient(char fichier_patient[50])
{
    FILE *f;
    int i=1;
    Patient pa;
    f=fopen(fichier_patient,"rb");
    if(f!=NULL)
    {
        while (fread(&pa,sizeof(Patient),1,f)!=0)
        {
            printf("\n \t Patient %d \n",i );
            printf("Nom : %s \n",pa.nom);
            printf("Prenom: %s \n",pa.prenom);
            printf("Sexe: %s \n",pa.sexe);
            printf("Age: %d \n",pa.age);
            printf("Id: %ld \n",pa.id);
            printf("Niveau infection:%d \n",pa.niveau_infection);
            printf("date :\t%d/%d/%d\n",pa.date_entree.jour,pa.date_entree.mois,pa.date_entree.annee);
            i++;
        }
 }
    else
        printf("\nImpossible d'ouvrir le fichier du patient\n");
    fclose(f);
}

int recherche_patient(char fichier_patient[50],char nom_patient[50])
{
    FILE *f;
    Patient pa;
    int t=0;
    f=fopen(fichier_patient,"rb");
    if(f!=NULL)
    {
        while(fread(&pa,sizeof(Patient),1,f)!=0 && t==0)
        {

            if(strcmp(pa.nom,nom_patient)==0)
                t=1;
        }
    }
    fclose(f);
    return t;

}
void supprimer_patient(char fichier_patient[50], long int id)
{
        Patient p;
        FILE *f,*r;
	int t=0;
        f=fopen(fichier_patient,"rb");
        r=fopen("temp","wb");
        if(f!=NULL)
	{
        while(fread(&p,sizeof(Patient),1,f)!=0)
        {
	fread(&p,sizeof(Patient),1,f);
        	if(p.id==id)
        	t=1; 
	
	}
     
    
        if (t==1)  
        {
        rewind(f);
        while (fread(&p,sizeof(Patient),1,f)!=0)
        {   

           
            if (p.id!=id)
            {
            
            
               fwrite(&p,sizeof(Patient),1,r);
               
               
               }
         }      
        
 fclose(f);
 fclose(r);
 remove(fichier_patient);
 rename("temp",fichier_patient);
	}else
	printf("le patient n'existe pas ");
	fclose(f);
	fclose(r);
}
}
	void modifier_patient(char fichier_patient[50]){
        Patient *pa ,*p1;
        pa=malloc(sizeof(Patient));
	p1=malloc(sizeof(Patient));     
        FILE *f,*r;
	int test=0;
        //*************************
	do {printf("donner ID du patient a modifier :\n");
        scanf("%ld: ",&pa->id);}
	while  ((pa->id)<50000 || (pa->id)>59999);
	printf("donner le nouveau nom du  patient:\n");fflush(stdin);
        scanf("%s: ",pa->nom);
        printf("donner le  nouveau prenom du patient:\n");fflush(stdin);
        scanf("%s: ",pa->prenom);
       // printf("donner le nouveau numero de passeport:\n");
        //scanf("%ld: ",&p->passeport);
       do {printf("donner le nouveau age:\n");
        scanf("%d: ",&pa->age);}while(pa->age <0);
        
        //printf("donner la nouvelle profession:\n ");fflush(stdin);
        //scanf("%s: ",p->profession);
        //printf("donner le nouveau login du personnel :\n ");
	//fflush(stdin);
        //scanf("%s: ",p->login);
	//do {printf("donner le nouveau mot de passe du personnel :\n ");
        //scanf("%d: ",&p->passe);}while(p->passe <0);
        do {printf("Le jour:\n");
        scanf("%d: ",&pa->date_entree.jour);}
while(pa->date_entree.jour >30||pa->date_entree.jour<0);
       do{ printf("Le mois:\n");
        scanf("%d: ",&pa->date_entree.mois);}
while(pa->date_entree.mois>12 ||pa->date_entree.mois<0);
        do {printf("L'annee:\n");
        scanf("%d: ",&pa->date_entree.annee);}
while (pa->date_entree.annee <2014);

       //**************************
       	f=fopen(fichier_patient,"rb");
        r=fopen("fichier_patientnv","ab");
        if (f!=NULL){ while(fread(p1,sizeof(Patient),1,f)!=0){
                         if(p1->id!=pa->id){fwrite(p1,sizeof(Patient),1,r);}
                         else fwrite(pa,sizeof(Patient),1,r); test=1; }}
        else printf("le fichier n'existe pas");
           
if(test==0) printf("cet id ne correspond a aucun patient");
else        printf("la modification est faite avec succes");
 	free(pa);free(p1);
        fclose(f);
	fclose(r);
 	remove(	fichier_patient);
	rename(	"fichier_patientnv",fichier_patient);
	}  









